↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
front_in_ag(void, []) → front_out_ag(void, [])
front_in_ag(tree(X, void, void), .(X, [])) → front_out_ag(tree(X, void, void), .(X, []))
front_in_ag(tree(X, L, R), Xs) → U1_ag(X, L, R, Xs, front_in_aa(L, Ls))
front_in_aa(void, []) → front_out_aa(void, [])
front_in_aa(tree(X, void, void), .(X, [])) → front_out_aa(tree(X, void, void), .(X, []))
front_in_aa(tree(X, L, R), Xs) → U1_aa(X, L, R, Xs, front_in_aa(L, Ls))
U1_aa(X, L, R, Xs, front_out_aa(L, Ls)) → U2_aa(X, L, R, Xs, Ls, front_in_aa(R, Rs))
U2_aa(X, L, R, Xs, Ls, front_out_aa(R, Rs)) → U3_aa(X, L, R, Xs, app_in_aaa(Ls, Rs, Xs))
app_in_aaa([], X, X) → app_out_aaa([], X, X)
app_in_aaa(.(X, Xs), Ys, .(X, Zs)) → U4_aaa(X, Xs, Ys, Zs, app_in_aaa(Xs, Ys, Zs))
U4_aaa(X, Xs, Ys, Zs, app_out_aaa(Xs, Ys, Zs)) → app_out_aaa(.(X, Xs), Ys, .(X, Zs))
U3_aa(X, L, R, Xs, app_out_aaa(Ls, Rs, Xs)) → front_out_aa(tree(X, L, R), Xs)
U1_ag(X, L, R, Xs, front_out_aa(L, Ls)) → U2_ag(X, L, R, Xs, Ls, front_in_aa(R, Rs))
U2_ag(X, L, R, Xs, Ls, front_out_aa(R, Rs)) → U3_ag(X, L, R, Xs, app_in_aag(Ls, Rs, Xs))
app_in_aag([], X, X) → app_out_aag([], X, X)
app_in_aag(.(X, Xs), Ys, .(X, Zs)) → U4_aag(X, Xs, Ys, Zs, app_in_aag(Xs, Ys, Zs))
U4_aag(X, Xs, Ys, Zs, app_out_aag(Xs, Ys, Zs)) → app_out_aag(.(X, Xs), Ys, .(X, Zs))
U3_ag(X, L, R, Xs, app_out_aag(Ls, Rs, Xs)) → front_out_ag(tree(X, L, R), Xs)
Infinitary Constructor Rewriting Termination of PiTRS implies Termination of Prolog
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PrologToPiTRSProof
front_in_ag(void, []) → front_out_ag(void, [])
front_in_ag(tree(X, void, void), .(X, [])) → front_out_ag(tree(X, void, void), .(X, []))
front_in_ag(tree(X, L, R), Xs) → U1_ag(X, L, R, Xs, front_in_aa(L, Ls))
front_in_aa(void, []) → front_out_aa(void, [])
front_in_aa(tree(X, void, void), .(X, [])) → front_out_aa(tree(X, void, void), .(X, []))
front_in_aa(tree(X, L, R), Xs) → U1_aa(X, L, R, Xs, front_in_aa(L, Ls))
U1_aa(X, L, R, Xs, front_out_aa(L, Ls)) → U2_aa(X, L, R, Xs, Ls, front_in_aa(R, Rs))
U2_aa(X, L, R, Xs, Ls, front_out_aa(R, Rs)) → U3_aa(X, L, R, Xs, app_in_aaa(Ls, Rs, Xs))
app_in_aaa([], X, X) → app_out_aaa([], X, X)
app_in_aaa(.(X, Xs), Ys, .(X, Zs)) → U4_aaa(X, Xs, Ys, Zs, app_in_aaa(Xs, Ys, Zs))
U4_aaa(X, Xs, Ys, Zs, app_out_aaa(Xs, Ys, Zs)) → app_out_aaa(.(X, Xs), Ys, .(X, Zs))
U3_aa(X, L, R, Xs, app_out_aaa(Ls, Rs, Xs)) → front_out_aa(tree(X, L, R), Xs)
U1_ag(X, L, R, Xs, front_out_aa(L, Ls)) → U2_ag(X, L, R, Xs, Ls, front_in_aa(R, Rs))
U2_ag(X, L, R, Xs, Ls, front_out_aa(R, Rs)) → U3_ag(X, L, R, Xs, app_in_aag(Ls, Rs, Xs))
app_in_aag([], X, X) → app_out_aag([], X, X)
app_in_aag(.(X, Xs), Ys, .(X, Zs)) → U4_aag(X, Xs, Ys, Zs, app_in_aag(Xs, Ys, Zs))
U4_aag(X, Xs, Ys, Zs, app_out_aag(Xs, Ys, Zs)) → app_out_aag(.(X, Xs), Ys, .(X, Zs))
U3_ag(X, L, R, Xs, app_out_aag(Ls, Rs, Xs)) → front_out_ag(tree(X, L, R), Xs)
FRONT_IN_AG(tree(X, L, R), Xs) → U1_AG(X, L, R, Xs, front_in_aa(L, Ls))
FRONT_IN_AG(tree(X, L, R), Xs) → FRONT_IN_AA(L, Ls)
FRONT_IN_AA(tree(X, L, R), Xs) → U1_AA(X, L, R, Xs, front_in_aa(L, Ls))
FRONT_IN_AA(tree(X, L, R), Xs) → FRONT_IN_AA(L, Ls)
U1_AA(X, L, R, Xs, front_out_aa(L, Ls)) → U2_AA(X, L, R, Xs, Ls, front_in_aa(R, Rs))
U1_AA(X, L, R, Xs, front_out_aa(L, Ls)) → FRONT_IN_AA(R, Rs)
U2_AA(X, L, R, Xs, Ls, front_out_aa(R, Rs)) → U3_AA(X, L, R, Xs, app_in_aaa(Ls, Rs, Xs))
U2_AA(X, L, R, Xs, Ls, front_out_aa(R, Rs)) → APP_IN_AAA(Ls, Rs, Xs)
APP_IN_AAA(.(X, Xs), Ys, .(X, Zs)) → U4_AAA(X, Xs, Ys, Zs, app_in_aaa(Xs, Ys, Zs))
APP_IN_AAA(.(X, Xs), Ys, .(X, Zs)) → APP_IN_AAA(Xs, Ys, Zs)
U1_AG(X, L, R, Xs, front_out_aa(L, Ls)) → U2_AG(X, L, R, Xs, Ls, front_in_aa(R, Rs))
U1_AG(X, L, R, Xs, front_out_aa(L, Ls)) → FRONT_IN_AA(R, Rs)
U2_AG(X, L, R, Xs, Ls, front_out_aa(R, Rs)) → U3_AG(X, L, R, Xs, app_in_aag(Ls, Rs, Xs))
U2_AG(X, L, R, Xs, Ls, front_out_aa(R, Rs)) → APP_IN_AAG(Ls, Rs, Xs)
APP_IN_AAG(.(X, Xs), Ys, .(X, Zs)) → U4_AAG(X, Xs, Ys, Zs, app_in_aag(Xs, Ys, Zs))
APP_IN_AAG(.(X, Xs), Ys, .(X, Zs)) → APP_IN_AAG(Xs, Ys, Zs)
front_in_ag(void, []) → front_out_ag(void, [])
front_in_ag(tree(X, void, void), .(X, [])) → front_out_ag(tree(X, void, void), .(X, []))
front_in_ag(tree(X, L, R), Xs) → U1_ag(X, L, R, Xs, front_in_aa(L, Ls))
front_in_aa(void, []) → front_out_aa(void, [])
front_in_aa(tree(X, void, void), .(X, [])) → front_out_aa(tree(X, void, void), .(X, []))
front_in_aa(tree(X, L, R), Xs) → U1_aa(X, L, R, Xs, front_in_aa(L, Ls))
U1_aa(X, L, R, Xs, front_out_aa(L, Ls)) → U2_aa(X, L, R, Xs, Ls, front_in_aa(R, Rs))
U2_aa(X, L, R, Xs, Ls, front_out_aa(R, Rs)) → U3_aa(X, L, R, Xs, app_in_aaa(Ls, Rs, Xs))
app_in_aaa([], X, X) → app_out_aaa([], X, X)
app_in_aaa(.(X, Xs), Ys, .(X, Zs)) → U4_aaa(X, Xs, Ys, Zs, app_in_aaa(Xs, Ys, Zs))
U4_aaa(X, Xs, Ys, Zs, app_out_aaa(Xs, Ys, Zs)) → app_out_aaa(.(X, Xs), Ys, .(X, Zs))
U3_aa(X, L, R, Xs, app_out_aaa(Ls, Rs, Xs)) → front_out_aa(tree(X, L, R), Xs)
U1_ag(X, L, R, Xs, front_out_aa(L, Ls)) → U2_ag(X, L, R, Xs, Ls, front_in_aa(R, Rs))
U2_ag(X, L, R, Xs, Ls, front_out_aa(R, Rs)) → U3_ag(X, L, R, Xs, app_in_aag(Ls, Rs, Xs))
app_in_aag([], X, X) → app_out_aag([], X, X)
app_in_aag(.(X, Xs), Ys, .(X, Zs)) → U4_aag(X, Xs, Ys, Zs, app_in_aag(Xs, Ys, Zs))
U4_aag(X, Xs, Ys, Zs, app_out_aag(Xs, Ys, Zs)) → app_out_aag(.(X, Xs), Ys, .(X, Zs))
U3_ag(X, L, R, Xs, app_out_aag(Ls, Rs, Xs)) → front_out_ag(tree(X, L, R), Xs)
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ PrologToPiTRSProof
FRONT_IN_AG(tree(X, L, R), Xs) → U1_AG(X, L, R, Xs, front_in_aa(L, Ls))
FRONT_IN_AG(tree(X, L, R), Xs) → FRONT_IN_AA(L, Ls)
FRONT_IN_AA(tree(X, L, R), Xs) → U1_AA(X, L, R, Xs, front_in_aa(L, Ls))
FRONT_IN_AA(tree(X, L, R), Xs) → FRONT_IN_AA(L, Ls)
U1_AA(X, L, R, Xs, front_out_aa(L, Ls)) → U2_AA(X, L, R, Xs, Ls, front_in_aa(R, Rs))
U1_AA(X, L, R, Xs, front_out_aa(L, Ls)) → FRONT_IN_AA(R, Rs)
U2_AA(X, L, R, Xs, Ls, front_out_aa(R, Rs)) → U3_AA(X, L, R, Xs, app_in_aaa(Ls, Rs, Xs))
U2_AA(X, L, R, Xs, Ls, front_out_aa(R, Rs)) → APP_IN_AAA(Ls, Rs, Xs)
APP_IN_AAA(.(X, Xs), Ys, .(X, Zs)) → U4_AAA(X, Xs, Ys, Zs, app_in_aaa(Xs, Ys, Zs))
APP_IN_AAA(.(X, Xs), Ys, .(X, Zs)) → APP_IN_AAA(Xs, Ys, Zs)
U1_AG(X, L, R, Xs, front_out_aa(L, Ls)) → U2_AG(X, L, R, Xs, Ls, front_in_aa(R, Rs))
U1_AG(X, L, R, Xs, front_out_aa(L, Ls)) → FRONT_IN_AA(R, Rs)
U2_AG(X, L, R, Xs, Ls, front_out_aa(R, Rs)) → U3_AG(X, L, R, Xs, app_in_aag(Ls, Rs, Xs))
U2_AG(X, L, R, Xs, Ls, front_out_aa(R, Rs)) → APP_IN_AAG(Ls, Rs, Xs)
APP_IN_AAG(.(X, Xs), Ys, .(X, Zs)) → U4_AAG(X, Xs, Ys, Zs, app_in_aag(Xs, Ys, Zs))
APP_IN_AAG(.(X, Xs), Ys, .(X, Zs)) → APP_IN_AAG(Xs, Ys, Zs)
front_in_ag(void, []) → front_out_ag(void, [])
front_in_ag(tree(X, void, void), .(X, [])) → front_out_ag(tree(X, void, void), .(X, []))
front_in_ag(tree(X, L, R), Xs) → U1_ag(X, L, R, Xs, front_in_aa(L, Ls))
front_in_aa(void, []) → front_out_aa(void, [])
front_in_aa(tree(X, void, void), .(X, [])) → front_out_aa(tree(X, void, void), .(X, []))
front_in_aa(tree(X, L, R), Xs) → U1_aa(X, L, R, Xs, front_in_aa(L, Ls))
U1_aa(X, L, R, Xs, front_out_aa(L, Ls)) → U2_aa(X, L, R, Xs, Ls, front_in_aa(R, Rs))
U2_aa(X, L, R, Xs, Ls, front_out_aa(R, Rs)) → U3_aa(X, L, R, Xs, app_in_aaa(Ls, Rs, Xs))
app_in_aaa([], X, X) → app_out_aaa([], X, X)
app_in_aaa(.(X, Xs), Ys, .(X, Zs)) → U4_aaa(X, Xs, Ys, Zs, app_in_aaa(Xs, Ys, Zs))
U4_aaa(X, Xs, Ys, Zs, app_out_aaa(Xs, Ys, Zs)) → app_out_aaa(.(X, Xs), Ys, .(X, Zs))
U3_aa(X, L, R, Xs, app_out_aaa(Ls, Rs, Xs)) → front_out_aa(tree(X, L, R), Xs)
U1_ag(X, L, R, Xs, front_out_aa(L, Ls)) → U2_ag(X, L, R, Xs, Ls, front_in_aa(R, Rs))
U2_ag(X, L, R, Xs, Ls, front_out_aa(R, Rs)) → U3_ag(X, L, R, Xs, app_in_aag(Ls, Rs, Xs))
app_in_aag([], X, X) → app_out_aag([], X, X)
app_in_aag(.(X, Xs), Ys, .(X, Zs)) → U4_aag(X, Xs, Ys, Zs, app_in_aag(Xs, Ys, Zs))
U4_aag(X, Xs, Ys, Zs, app_out_aag(Xs, Ys, Zs)) → app_out_aag(.(X, Xs), Ys, .(X, Zs))
U3_ag(X, L, R, Xs, app_out_aag(Ls, Rs, Xs)) → front_out_ag(tree(X, L, R), Xs)
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDP
↳ PrologToPiTRSProof
APP_IN_AAG(.(X, Xs), Ys, .(X, Zs)) → APP_IN_AAG(Xs, Ys, Zs)
front_in_ag(void, []) → front_out_ag(void, [])
front_in_ag(tree(X, void, void), .(X, [])) → front_out_ag(tree(X, void, void), .(X, []))
front_in_ag(tree(X, L, R), Xs) → U1_ag(X, L, R, Xs, front_in_aa(L, Ls))
front_in_aa(void, []) → front_out_aa(void, [])
front_in_aa(tree(X, void, void), .(X, [])) → front_out_aa(tree(X, void, void), .(X, []))
front_in_aa(tree(X, L, R), Xs) → U1_aa(X, L, R, Xs, front_in_aa(L, Ls))
U1_aa(X, L, R, Xs, front_out_aa(L, Ls)) → U2_aa(X, L, R, Xs, Ls, front_in_aa(R, Rs))
U2_aa(X, L, R, Xs, Ls, front_out_aa(R, Rs)) → U3_aa(X, L, R, Xs, app_in_aaa(Ls, Rs, Xs))
app_in_aaa([], X, X) → app_out_aaa([], X, X)
app_in_aaa(.(X, Xs), Ys, .(X, Zs)) → U4_aaa(X, Xs, Ys, Zs, app_in_aaa(Xs, Ys, Zs))
U4_aaa(X, Xs, Ys, Zs, app_out_aaa(Xs, Ys, Zs)) → app_out_aaa(.(X, Xs), Ys, .(X, Zs))
U3_aa(X, L, R, Xs, app_out_aaa(Ls, Rs, Xs)) → front_out_aa(tree(X, L, R), Xs)
U1_ag(X, L, R, Xs, front_out_aa(L, Ls)) → U2_ag(X, L, R, Xs, Ls, front_in_aa(R, Rs))
U2_ag(X, L, R, Xs, Ls, front_out_aa(R, Rs)) → U3_ag(X, L, R, Xs, app_in_aag(Ls, Rs, Xs))
app_in_aag([], X, X) → app_out_aag([], X, X)
app_in_aag(.(X, Xs), Ys, .(X, Zs)) → U4_aag(X, Xs, Ys, Zs, app_in_aag(Xs, Ys, Zs))
U4_aag(X, Xs, Ys, Zs, app_out_aag(Xs, Ys, Zs)) → app_out_aag(.(X, Xs), Ys, .(X, Zs))
U3_ag(X, L, R, Xs, app_out_aag(Ls, Rs, Xs)) → front_out_ag(tree(X, L, R), Xs)
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ PiDP
↳ PiDP
↳ PrologToPiTRSProof
APP_IN_AAG(.(X, Xs), Ys, .(X, Zs)) → APP_IN_AAG(Xs, Ys, Zs)
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ QDPSizeChangeProof
↳ PiDP
↳ PiDP
↳ PrologToPiTRSProof
APP_IN_AAG(.(X, Zs)) → APP_IN_AAG(Zs)
From the DPs we obtained the following set of size-change graphs:
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PrologToPiTRSProof
APP_IN_AAA(.(X, Xs), Ys, .(X, Zs)) → APP_IN_AAA(Xs, Ys, Zs)
front_in_ag(void, []) → front_out_ag(void, [])
front_in_ag(tree(X, void, void), .(X, [])) → front_out_ag(tree(X, void, void), .(X, []))
front_in_ag(tree(X, L, R), Xs) → U1_ag(X, L, R, Xs, front_in_aa(L, Ls))
front_in_aa(void, []) → front_out_aa(void, [])
front_in_aa(tree(X, void, void), .(X, [])) → front_out_aa(tree(X, void, void), .(X, []))
front_in_aa(tree(X, L, R), Xs) → U1_aa(X, L, R, Xs, front_in_aa(L, Ls))
U1_aa(X, L, R, Xs, front_out_aa(L, Ls)) → U2_aa(X, L, R, Xs, Ls, front_in_aa(R, Rs))
U2_aa(X, L, R, Xs, Ls, front_out_aa(R, Rs)) → U3_aa(X, L, R, Xs, app_in_aaa(Ls, Rs, Xs))
app_in_aaa([], X, X) → app_out_aaa([], X, X)
app_in_aaa(.(X, Xs), Ys, .(X, Zs)) → U4_aaa(X, Xs, Ys, Zs, app_in_aaa(Xs, Ys, Zs))
U4_aaa(X, Xs, Ys, Zs, app_out_aaa(Xs, Ys, Zs)) → app_out_aaa(.(X, Xs), Ys, .(X, Zs))
U3_aa(X, L, R, Xs, app_out_aaa(Ls, Rs, Xs)) → front_out_aa(tree(X, L, R), Xs)
U1_ag(X, L, R, Xs, front_out_aa(L, Ls)) → U2_ag(X, L, R, Xs, Ls, front_in_aa(R, Rs))
U2_ag(X, L, R, Xs, Ls, front_out_aa(R, Rs)) → U3_ag(X, L, R, Xs, app_in_aag(Ls, Rs, Xs))
app_in_aag([], X, X) → app_out_aag([], X, X)
app_in_aag(.(X, Xs), Ys, .(X, Zs)) → U4_aag(X, Xs, Ys, Zs, app_in_aag(Xs, Ys, Zs))
U4_aag(X, Xs, Ys, Zs, app_out_aag(Xs, Ys, Zs)) → app_out_aag(.(X, Xs), Ys, .(X, Zs))
U3_ag(X, L, R, Xs, app_out_aag(Ls, Rs, Xs)) → front_out_ag(tree(X, L, R), Xs)
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ PiDP
↳ PrologToPiTRSProof
APP_IN_AAA(.(X, Xs), Ys, .(X, Zs)) → APP_IN_AAA(Xs, Ys, Zs)
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ NonTerminationProof
↳ PiDP
↳ PrologToPiTRSProof
APP_IN_AAA → APP_IN_AAA
APP_IN_AAA → APP_IN_AAA
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PrologToPiTRSProof
FRONT_IN_AA(tree(X, L, R), Xs) → U1_AA(X, L, R, Xs, front_in_aa(L, Ls))
FRONT_IN_AA(tree(X, L, R), Xs) → FRONT_IN_AA(L, Ls)
U1_AA(X, L, R, Xs, front_out_aa(L, Ls)) → FRONT_IN_AA(R, Rs)
front_in_ag(void, []) → front_out_ag(void, [])
front_in_ag(tree(X, void, void), .(X, [])) → front_out_ag(tree(X, void, void), .(X, []))
front_in_ag(tree(X, L, R), Xs) → U1_ag(X, L, R, Xs, front_in_aa(L, Ls))
front_in_aa(void, []) → front_out_aa(void, [])
front_in_aa(tree(X, void, void), .(X, [])) → front_out_aa(tree(X, void, void), .(X, []))
front_in_aa(tree(X, L, R), Xs) → U1_aa(X, L, R, Xs, front_in_aa(L, Ls))
U1_aa(X, L, R, Xs, front_out_aa(L, Ls)) → U2_aa(X, L, R, Xs, Ls, front_in_aa(R, Rs))
U2_aa(X, L, R, Xs, Ls, front_out_aa(R, Rs)) → U3_aa(X, L, R, Xs, app_in_aaa(Ls, Rs, Xs))
app_in_aaa([], X, X) → app_out_aaa([], X, X)
app_in_aaa(.(X, Xs), Ys, .(X, Zs)) → U4_aaa(X, Xs, Ys, Zs, app_in_aaa(Xs, Ys, Zs))
U4_aaa(X, Xs, Ys, Zs, app_out_aaa(Xs, Ys, Zs)) → app_out_aaa(.(X, Xs), Ys, .(X, Zs))
U3_aa(X, L, R, Xs, app_out_aaa(Ls, Rs, Xs)) → front_out_aa(tree(X, L, R), Xs)
U1_ag(X, L, R, Xs, front_out_aa(L, Ls)) → U2_ag(X, L, R, Xs, Ls, front_in_aa(R, Rs))
U2_ag(X, L, R, Xs, Ls, front_out_aa(R, Rs)) → U3_ag(X, L, R, Xs, app_in_aag(Ls, Rs, Xs))
app_in_aag([], X, X) → app_out_aag([], X, X)
app_in_aag(.(X, Xs), Ys, .(X, Zs)) → U4_aag(X, Xs, Ys, Zs, app_in_aag(Xs, Ys, Zs))
U4_aag(X, Xs, Ys, Zs, app_out_aag(Xs, Ys, Zs)) → app_out_aag(.(X, Xs), Ys, .(X, Zs))
U3_ag(X, L, R, Xs, app_out_aag(Ls, Rs, Xs)) → front_out_ag(tree(X, L, R), Xs)
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ PrologToPiTRSProof
FRONT_IN_AA(tree(X, L, R), Xs) → U1_AA(X, L, R, Xs, front_in_aa(L, Ls))
FRONT_IN_AA(tree(X, L, R), Xs) → FRONT_IN_AA(L, Ls)
U1_AA(X, L, R, Xs, front_out_aa(L, Ls)) → FRONT_IN_AA(R, Rs)
front_in_aa(void, []) → front_out_aa(void, [])
front_in_aa(tree(X, void, void), .(X, [])) → front_out_aa(tree(X, void, void), .(X, []))
front_in_aa(tree(X, L, R), Xs) → U1_aa(X, L, R, Xs, front_in_aa(L, Ls))
U1_aa(X, L, R, Xs, front_out_aa(L, Ls)) → U2_aa(X, L, R, Xs, Ls, front_in_aa(R, Rs))
U2_aa(X, L, R, Xs, Ls, front_out_aa(R, Rs)) → U3_aa(X, L, R, Xs, app_in_aaa(Ls, Rs, Xs))
U3_aa(X, L, R, Xs, app_out_aaa(Ls, Rs, Xs)) → front_out_aa(tree(X, L, R), Xs)
app_in_aaa([], X, X) → app_out_aaa([], X, X)
app_in_aaa(.(X, Xs), Ys, .(X, Zs)) → U4_aaa(X, Xs, Ys, Zs, app_in_aaa(Xs, Ys, Zs))
U4_aaa(X, Xs, Ys, Zs, app_out_aaa(Xs, Ys, Zs)) → app_out_aaa(.(X, Xs), Ys, .(X, Zs))
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ Narrowing
↳ PrologToPiTRSProof
FRONT_IN_AA → U1_AA(front_in_aa)
U1_AA(front_out_aa) → FRONT_IN_AA
FRONT_IN_AA → FRONT_IN_AA
front_in_aa → front_out_aa
front_in_aa → U1_aa(front_in_aa)
U1_aa(front_out_aa) → U2_aa(front_in_aa)
U2_aa(front_out_aa) → U3_aa(app_in_aaa)
U3_aa(app_out_aaa) → front_out_aa
app_in_aaa → app_out_aaa
app_in_aaa → U4_aaa(app_in_aaa)
U4_aaa(app_out_aaa) → app_out_aaa
front_in_aa
U1_aa(x0)
U2_aa(x0)
U3_aa(x0)
app_in_aaa
U4_aaa(x0)
FRONT_IN_AA → U1_AA(U1_aa(front_in_aa))
FRONT_IN_AA → U1_AA(front_out_aa)
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ Narrowing
↳ QDP
↳ NonTerminationProof
↳ PrologToPiTRSProof
FRONT_IN_AA → U1_AA(U1_aa(front_in_aa))
FRONT_IN_AA → U1_AA(front_out_aa)
FRONT_IN_AA → FRONT_IN_AA
U1_AA(front_out_aa) → FRONT_IN_AA
front_in_aa → front_out_aa
front_in_aa → U1_aa(front_in_aa)
U1_aa(front_out_aa) → U2_aa(front_in_aa)
U2_aa(front_out_aa) → U3_aa(app_in_aaa)
U3_aa(app_out_aaa) → front_out_aa
app_in_aaa → app_out_aaa
app_in_aaa → U4_aaa(app_in_aaa)
U4_aaa(app_out_aaa) → app_out_aaa
front_in_aa
U1_aa(x0)
U2_aa(x0)
U3_aa(x0)
app_in_aaa
U4_aaa(x0)
FRONT_IN_AA → U1_AA(U1_aa(front_in_aa))
FRONT_IN_AA → U1_AA(front_out_aa)
FRONT_IN_AA → FRONT_IN_AA
U1_AA(front_out_aa) → FRONT_IN_AA
front_in_aa → front_out_aa
front_in_aa → U1_aa(front_in_aa)
U1_aa(front_out_aa) → U2_aa(front_in_aa)
U2_aa(front_out_aa) → U3_aa(app_in_aaa)
U3_aa(app_out_aaa) → front_out_aa
app_in_aaa → app_out_aaa
app_in_aaa → U4_aaa(app_in_aaa)
U4_aaa(app_out_aaa) → app_out_aaa
front_in_ag(void, []) → front_out_ag(void, [])
front_in_ag(tree(X, void, void), .(X, [])) → front_out_ag(tree(X, void, void), .(X, []))
front_in_ag(tree(X, L, R), Xs) → U1_ag(X, L, R, Xs, front_in_aa(L, Ls))
front_in_aa(void, []) → front_out_aa(void, [])
front_in_aa(tree(X, void, void), .(X, [])) → front_out_aa(tree(X, void, void), .(X, []))
front_in_aa(tree(X, L, R), Xs) → U1_aa(X, L, R, Xs, front_in_aa(L, Ls))
U1_aa(X, L, R, Xs, front_out_aa(L, Ls)) → U2_aa(X, L, R, Xs, Ls, front_in_aa(R, Rs))
U2_aa(X, L, R, Xs, Ls, front_out_aa(R, Rs)) → U3_aa(X, L, R, Xs, app_in_aaa(Ls, Rs, Xs))
app_in_aaa([], X, X) → app_out_aaa([], X, X)
app_in_aaa(.(X, Xs), Ys, .(X, Zs)) → U4_aaa(X, Xs, Ys, Zs, app_in_aaa(Xs, Ys, Zs))
U4_aaa(X, Xs, Ys, Zs, app_out_aaa(Xs, Ys, Zs)) → app_out_aaa(.(X, Xs), Ys, .(X, Zs))
U3_aa(X, L, R, Xs, app_out_aaa(Ls, Rs, Xs)) → front_out_aa(tree(X, L, R), Xs)
U1_ag(X, L, R, Xs, front_out_aa(L, Ls)) → U2_ag(X, L, R, Xs, Ls, front_in_aa(R, Rs))
U2_ag(X, L, R, Xs, Ls, front_out_aa(R, Rs)) → U3_ag(X, L, R, Xs, app_in_aag(Ls, Rs, Xs))
app_in_aag([], X, X) → app_out_aag([], X, X)
app_in_aag(.(X, Xs), Ys, .(X, Zs)) → U4_aag(X, Xs, Ys, Zs, app_in_aag(Xs, Ys, Zs))
U4_aag(X, Xs, Ys, Zs, app_out_aag(Xs, Ys, Zs)) → app_out_aag(.(X, Xs), Ys, .(X, Zs))
U3_ag(X, L, R, Xs, app_out_aag(Ls, Rs, Xs)) → front_out_ag(tree(X, L, R), Xs)
Infinitary Constructor Rewriting Termination of PiTRS implies Termination of Prolog
↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
front_in_ag(void, []) → front_out_ag(void, [])
front_in_ag(tree(X, void, void), .(X, [])) → front_out_ag(tree(X, void, void), .(X, []))
front_in_ag(tree(X, L, R), Xs) → U1_ag(X, L, R, Xs, front_in_aa(L, Ls))
front_in_aa(void, []) → front_out_aa(void, [])
front_in_aa(tree(X, void, void), .(X, [])) → front_out_aa(tree(X, void, void), .(X, []))
front_in_aa(tree(X, L, R), Xs) → U1_aa(X, L, R, Xs, front_in_aa(L, Ls))
U1_aa(X, L, R, Xs, front_out_aa(L, Ls)) → U2_aa(X, L, R, Xs, Ls, front_in_aa(R, Rs))
U2_aa(X, L, R, Xs, Ls, front_out_aa(R, Rs)) → U3_aa(X, L, R, Xs, app_in_aaa(Ls, Rs, Xs))
app_in_aaa([], X, X) → app_out_aaa([], X, X)
app_in_aaa(.(X, Xs), Ys, .(X, Zs)) → U4_aaa(X, Xs, Ys, Zs, app_in_aaa(Xs, Ys, Zs))
U4_aaa(X, Xs, Ys, Zs, app_out_aaa(Xs, Ys, Zs)) → app_out_aaa(.(X, Xs), Ys, .(X, Zs))
U3_aa(X, L, R, Xs, app_out_aaa(Ls, Rs, Xs)) → front_out_aa(tree(X, L, R), Xs)
U1_ag(X, L, R, Xs, front_out_aa(L, Ls)) → U2_ag(X, L, R, Xs, Ls, front_in_aa(R, Rs))
U2_ag(X, L, R, Xs, Ls, front_out_aa(R, Rs)) → U3_ag(X, L, R, Xs, app_in_aag(Ls, Rs, Xs))
app_in_aag([], X, X) → app_out_aag([], X, X)
app_in_aag(.(X, Xs), Ys, .(X, Zs)) → U4_aag(X, Xs, Ys, Zs, app_in_aag(Xs, Ys, Zs))
U4_aag(X, Xs, Ys, Zs, app_out_aag(Xs, Ys, Zs)) → app_out_aag(.(X, Xs), Ys, .(X, Zs))
U3_ag(X, L, R, Xs, app_out_aag(Ls, Rs, Xs)) → front_out_ag(tree(X, L, R), Xs)
FRONT_IN_AG(tree(X, L, R), Xs) → U1_AG(X, L, R, Xs, front_in_aa(L, Ls))
FRONT_IN_AG(tree(X, L, R), Xs) → FRONT_IN_AA(L, Ls)
FRONT_IN_AA(tree(X, L, R), Xs) → U1_AA(X, L, R, Xs, front_in_aa(L, Ls))
FRONT_IN_AA(tree(X, L, R), Xs) → FRONT_IN_AA(L, Ls)
U1_AA(X, L, R, Xs, front_out_aa(L, Ls)) → U2_AA(X, L, R, Xs, Ls, front_in_aa(R, Rs))
U1_AA(X, L, R, Xs, front_out_aa(L, Ls)) → FRONT_IN_AA(R, Rs)
U2_AA(X, L, R, Xs, Ls, front_out_aa(R, Rs)) → U3_AA(X, L, R, Xs, app_in_aaa(Ls, Rs, Xs))
U2_AA(X, L, R, Xs, Ls, front_out_aa(R, Rs)) → APP_IN_AAA(Ls, Rs, Xs)
APP_IN_AAA(.(X, Xs), Ys, .(X, Zs)) → U4_AAA(X, Xs, Ys, Zs, app_in_aaa(Xs, Ys, Zs))
APP_IN_AAA(.(X, Xs), Ys, .(X, Zs)) → APP_IN_AAA(Xs, Ys, Zs)
U1_AG(X, L, R, Xs, front_out_aa(L, Ls)) → U2_AG(X, L, R, Xs, Ls, front_in_aa(R, Rs))
U1_AG(X, L, R, Xs, front_out_aa(L, Ls)) → FRONT_IN_AA(R, Rs)
U2_AG(X, L, R, Xs, Ls, front_out_aa(R, Rs)) → U3_AG(X, L, R, Xs, app_in_aag(Ls, Rs, Xs))
U2_AG(X, L, R, Xs, Ls, front_out_aa(R, Rs)) → APP_IN_AAG(Ls, Rs, Xs)
APP_IN_AAG(.(X, Xs), Ys, .(X, Zs)) → U4_AAG(X, Xs, Ys, Zs, app_in_aag(Xs, Ys, Zs))
APP_IN_AAG(.(X, Xs), Ys, .(X, Zs)) → APP_IN_AAG(Xs, Ys, Zs)
front_in_ag(void, []) → front_out_ag(void, [])
front_in_ag(tree(X, void, void), .(X, [])) → front_out_ag(tree(X, void, void), .(X, []))
front_in_ag(tree(X, L, R), Xs) → U1_ag(X, L, R, Xs, front_in_aa(L, Ls))
front_in_aa(void, []) → front_out_aa(void, [])
front_in_aa(tree(X, void, void), .(X, [])) → front_out_aa(tree(X, void, void), .(X, []))
front_in_aa(tree(X, L, R), Xs) → U1_aa(X, L, R, Xs, front_in_aa(L, Ls))
U1_aa(X, L, R, Xs, front_out_aa(L, Ls)) → U2_aa(X, L, R, Xs, Ls, front_in_aa(R, Rs))
U2_aa(X, L, R, Xs, Ls, front_out_aa(R, Rs)) → U3_aa(X, L, R, Xs, app_in_aaa(Ls, Rs, Xs))
app_in_aaa([], X, X) → app_out_aaa([], X, X)
app_in_aaa(.(X, Xs), Ys, .(X, Zs)) → U4_aaa(X, Xs, Ys, Zs, app_in_aaa(Xs, Ys, Zs))
U4_aaa(X, Xs, Ys, Zs, app_out_aaa(Xs, Ys, Zs)) → app_out_aaa(.(X, Xs), Ys, .(X, Zs))
U3_aa(X, L, R, Xs, app_out_aaa(Ls, Rs, Xs)) → front_out_aa(tree(X, L, R), Xs)
U1_ag(X, L, R, Xs, front_out_aa(L, Ls)) → U2_ag(X, L, R, Xs, Ls, front_in_aa(R, Rs))
U2_ag(X, L, R, Xs, Ls, front_out_aa(R, Rs)) → U3_ag(X, L, R, Xs, app_in_aag(Ls, Rs, Xs))
app_in_aag([], X, X) → app_out_aag([], X, X)
app_in_aag(.(X, Xs), Ys, .(X, Zs)) → U4_aag(X, Xs, Ys, Zs, app_in_aag(Xs, Ys, Zs))
U4_aag(X, Xs, Ys, Zs, app_out_aag(Xs, Ys, Zs)) → app_out_aag(.(X, Xs), Ys, .(X, Zs))
U3_ag(X, L, R, Xs, app_out_aag(Ls, Rs, Xs)) → front_out_ag(tree(X, L, R), Xs)
↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
FRONT_IN_AG(tree(X, L, R), Xs) → U1_AG(X, L, R, Xs, front_in_aa(L, Ls))
FRONT_IN_AG(tree(X, L, R), Xs) → FRONT_IN_AA(L, Ls)
FRONT_IN_AA(tree(X, L, R), Xs) → U1_AA(X, L, R, Xs, front_in_aa(L, Ls))
FRONT_IN_AA(tree(X, L, R), Xs) → FRONT_IN_AA(L, Ls)
U1_AA(X, L, R, Xs, front_out_aa(L, Ls)) → U2_AA(X, L, R, Xs, Ls, front_in_aa(R, Rs))
U1_AA(X, L, R, Xs, front_out_aa(L, Ls)) → FRONT_IN_AA(R, Rs)
U2_AA(X, L, R, Xs, Ls, front_out_aa(R, Rs)) → U3_AA(X, L, R, Xs, app_in_aaa(Ls, Rs, Xs))
U2_AA(X, L, R, Xs, Ls, front_out_aa(R, Rs)) → APP_IN_AAA(Ls, Rs, Xs)
APP_IN_AAA(.(X, Xs), Ys, .(X, Zs)) → U4_AAA(X, Xs, Ys, Zs, app_in_aaa(Xs, Ys, Zs))
APP_IN_AAA(.(X, Xs), Ys, .(X, Zs)) → APP_IN_AAA(Xs, Ys, Zs)
U1_AG(X, L, R, Xs, front_out_aa(L, Ls)) → U2_AG(X, L, R, Xs, Ls, front_in_aa(R, Rs))
U1_AG(X, L, R, Xs, front_out_aa(L, Ls)) → FRONT_IN_AA(R, Rs)
U2_AG(X, L, R, Xs, Ls, front_out_aa(R, Rs)) → U3_AG(X, L, R, Xs, app_in_aag(Ls, Rs, Xs))
U2_AG(X, L, R, Xs, Ls, front_out_aa(R, Rs)) → APP_IN_AAG(Ls, Rs, Xs)
APP_IN_AAG(.(X, Xs), Ys, .(X, Zs)) → U4_AAG(X, Xs, Ys, Zs, app_in_aag(Xs, Ys, Zs))
APP_IN_AAG(.(X, Xs), Ys, .(X, Zs)) → APP_IN_AAG(Xs, Ys, Zs)
front_in_ag(void, []) → front_out_ag(void, [])
front_in_ag(tree(X, void, void), .(X, [])) → front_out_ag(tree(X, void, void), .(X, []))
front_in_ag(tree(X, L, R), Xs) → U1_ag(X, L, R, Xs, front_in_aa(L, Ls))
front_in_aa(void, []) → front_out_aa(void, [])
front_in_aa(tree(X, void, void), .(X, [])) → front_out_aa(tree(X, void, void), .(X, []))
front_in_aa(tree(X, L, R), Xs) → U1_aa(X, L, R, Xs, front_in_aa(L, Ls))
U1_aa(X, L, R, Xs, front_out_aa(L, Ls)) → U2_aa(X, L, R, Xs, Ls, front_in_aa(R, Rs))
U2_aa(X, L, R, Xs, Ls, front_out_aa(R, Rs)) → U3_aa(X, L, R, Xs, app_in_aaa(Ls, Rs, Xs))
app_in_aaa([], X, X) → app_out_aaa([], X, X)
app_in_aaa(.(X, Xs), Ys, .(X, Zs)) → U4_aaa(X, Xs, Ys, Zs, app_in_aaa(Xs, Ys, Zs))
U4_aaa(X, Xs, Ys, Zs, app_out_aaa(Xs, Ys, Zs)) → app_out_aaa(.(X, Xs), Ys, .(X, Zs))
U3_aa(X, L, R, Xs, app_out_aaa(Ls, Rs, Xs)) → front_out_aa(tree(X, L, R), Xs)
U1_ag(X, L, R, Xs, front_out_aa(L, Ls)) → U2_ag(X, L, R, Xs, Ls, front_in_aa(R, Rs))
U2_ag(X, L, R, Xs, Ls, front_out_aa(R, Rs)) → U3_ag(X, L, R, Xs, app_in_aag(Ls, Rs, Xs))
app_in_aag([], X, X) → app_out_aag([], X, X)
app_in_aag(.(X, Xs), Ys, .(X, Zs)) → U4_aag(X, Xs, Ys, Zs, app_in_aag(Xs, Ys, Zs))
U4_aag(X, Xs, Ys, Zs, app_out_aag(Xs, Ys, Zs)) → app_out_aag(.(X, Xs), Ys, .(X, Zs))
U3_ag(X, L, R, Xs, app_out_aag(Ls, Rs, Xs)) → front_out_ag(tree(X, L, R), Xs)
↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDP
APP_IN_AAG(.(X, Xs), Ys, .(X, Zs)) → APP_IN_AAG(Xs, Ys, Zs)
front_in_ag(void, []) → front_out_ag(void, [])
front_in_ag(tree(X, void, void), .(X, [])) → front_out_ag(tree(X, void, void), .(X, []))
front_in_ag(tree(X, L, R), Xs) → U1_ag(X, L, R, Xs, front_in_aa(L, Ls))
front_in_aa(void, []) → front_out_aa(void, [])
front_in_aa(tree(X, void, void), .(X, [])) → front_out_aa(tree(X, void, void), .(X, []))
front_in_aa(tree(X, L, R), Xs) → U1_aa(X, L, R, Xs, front_in_aa(L, Ls))
U1_aa(X, L, R, Xs, front_out_aa(L, Ls)) → U2_aa(X, L, R, Xs, Ls, front_in_aa(R, Rs))
U2_aa(X, L, R, Xs, Ls, front_out_aa(R, Rs)) → U3_aa(X, L, R, Xs, app_in_aaa(Ls, Rs, Xs))
app_in_aaa([], X, X) → app_out_aaa([], X, X)
app_in_aaa(.(X, Xs), Ys, .(X, Zs)) → U4_aaa(X, Xs, Ys, Zs, app_in_aaa(Xs, Ys, Zs))
U4_aaa(X, Xs, Ys, Zs, app_out_aaa(Xs, Ys, Zs)) → app_out_aaa(.(X, Xs), Ys, .(X, Zs))
U3_aa(X, L, R, Xs, app_out_aaa(Ls, Rs, Xs)) → front_out_aa(tree(X, L, R), Xs)
U1_ag(X, L, R, Xs, front_out_aa(L, Ls)) → U2_ag(X, L, R, Xs, Ls, front_in_aa(R, Rs))
U2_ag(X, L, R, Xs, Ls, front_out_aa(R, Rs)) → U3_ag(X, L, R, Xs, app_in_aag(Ls, Rs, Xs))
app_in_aag([], X, X) → app_out_aag([], X, X)
app_in_aag(.(X, Xs), Ys, .(X, Zs)) → U4_aag(X, Xs, Ys, Zs, app_in_aag(Xs, Ys, Zs))
U4_aag(X, Xs, Ys, Zs, app_out_aag(Xs, Ys, Zs)) → app_out_aag(.(X, Xs), Ys, .(X, Zs))
U3_ag(X, L, R, Xs, app_out_aag(Ls, Rs, Xs)) → front_out_ag(tree(X, L, R), Xs)
↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ PiDP
↳ PiDP
APP_IN_AAG(.(X, Xs), Ys, .(X, Zs)) → APP_IN_AAG(Xs, Ys, Zs)
↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ QDPSizeChangeProof
↳ PiDP
↳ PiDP
APP_IN_AAG(.(X, Zs)) → APP_IN_AAG(Zs)
From the DPs we obtained the following set of size-change graphs:
↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
APP_IN_AAA(.(X, Xs), Ys, .(X, Zs)) → APP_IN_AAA(Xs, Ys, Zs)
front_in_ag(void, []) → front_out_ag(void, [])
front_in_ag(tree(X, void, void), .(X, [])) → front_out_ag(tree(X, void, void), .(X, []))
front_in_ag(tree(X, L, R), Xs) → U1_ag(X, L, R, Xs, front_in_aa(L, Ls))
front_in_aa(void, []) → front_out_aa(void, [])
front_in_aa(tree(X, void, void), .(X, [])) → front_out_aa(tree(X, void, void), .(X, []))
front_in_aa(tree(X, L, R), Xs) → U1_aa(X, L, R, Xs, front_in_aa(L, Ls))
U1_aa(X, L, R, Xs, front_out_aa(L, Ls)) → U2_aa(X, L, R, Xs, Ls, front_in_aa(R, Rs))
U2_aa(X, L, R, Xs, Ls, front_out_aa(R, Rs)) → U3_aa(X, L, R, Xs, app_in_aaa(Ls, Rs, Xs))
app_in_aaa([], X, X) → app_out_aaa([], X, X)
app_in_aaa(.(X, Xs), Ys, .(X, Zs)) → U4_aaa(X, Xs, Ys, Zs, app_in_aaa(Xs, Ys, Zs))
U4_aaa(X, Xs, Ys, Zs, app_out_aaa(Xs, Ys, Zs)) → app_out_aaa(.(X, Xs), Ys, .(X, Zs))
U3_aa(X, L, R, Xs, app_out_aaa(Ls, Rs, Xs)) → front_out_aa(tree(X, L, R), Xs)
U1_ag(X, L, R, Xs, front_out_aa(L, Ls)) → U2_ag(X, L, R, Xs, Ls, front_in_aa(R, Rs))
U2_ag(X, L, R, Xs, Ls, front_out_aa(R, Rs)) → U3_ag(X, L, R, Xs, app_in_aag(Ls, Rs, Xs))
app_in_aag([], X, X) → app_out_aag([], X, X)
app_in_aag(.(X, Xs), Ys, .(X, Zs)) → U4_aag(X, Xs, Ys, Zs, app_in_aag(Xs, Ys, Zs))
U4_aag(X, Xs, Ys, Zs, app_out_aag(Xs, Ys, Zs)) → app_out_aag(.(X, Xs), Ys, .(X, Zs))
U3_ag(X, L, R, Xs, app_out_aag(Ls, Rs, Xs)) → front_out_ag(tree(X, L, R), Xs)
↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ PiDP
APP_IN_AAA(.(X, Xs), Ys, .(X, Zs)) → APP_IN_AAA(Xs, Ys, Zs)
↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ NonTerminationProof
↳ PiDP
APP_IN_AAA → APP_IN_AAA
APP_IN_AAA → APP_IN_AAA
↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ PiDP
↳ UsableRulesProof
FRONT_IN_AA(tree(X, L, R), Xs) → U1_AA(X, L, R, Xs, front_in_aa(L, Ls))
FRONT_IN_AA(tree(X, L, R), Xs) → FRONT_IN_AA(L, Ls)
U1_AA(X, L, R, Xs, front_out_aa(L, Ls)) → FRONT_IN_AA(R, Rs)
front_in_ag(void, []) → front_out_ag(void, [])
front_in_ag(tree(X, void, void), .(X, [])) → front_out_ag(tree(X, void, void), .(X, []))
front_in_ag(tree(X, L, R), Xs) → U1_ag(X, L, R, Xs, front_in_aa(L, Ls))
front_in_aa(void, []) → front_out_aa(void, [])
front_in_aa(tree(X, void, void), .(X, [])) → front_out_aa(tree(X, void, void), .(X, []))
front_in_aa(tree(X, L, R), Xs) → U1_aa(X, L, R, Xs, front_in_aa(L, Ls))
U1_aa(X, L, R, Xs, front_out_aa(L, Ls)) → U2_aa(X, L, R, Xs, Ls, front_in_aa(R, Rs))
U2_aa(X, L, R, Xs, Ls, front_out_aa(R, Rs)) → U3_aa(X, L, R, Xs, app_in_aaa(Ls, Rs, Xs))
app_in_aaa([], X, X) → app_out_aaa([], X, X)
app_in_aaa(.(X, Xs), Ys, .(X, Zs)) → U4_aaa(X, Xs, Ys, Zs, app_in_aaa(Xs, Ys, Zs))
U4_aaa(X, Xs, Ys, Zs, app_out_aaa(Xs, Ys, Zs)) → app_out_aaa(.(X, Xs), Ys, .(X, Zs))
U3_aa(X, L, R, Xs, app_out_aaa(Ls, Rs, Xs)) → front_out_aa(tree(X, L, R), Xs)
U1_ag(X, L, R, Xs, front_out_aa(L, Ls)) → U2_ag(X, L, R, Xs, Ls, front_in_aa(R, Rs))
U2_ag(X, L, R, Xs, Ls, front_out_aa(R, Rs)) → U3_ag(X, L, R, Xs, app_in_aag(Ls, Rs, Xs))
app_in_aag([], X, X) → app_out_aag([], X, X)
app_in_aag(.(X, Xs), Ys, .(X, Zs)) → U4_aag(X, Xs, Ys, Zs, app_in_aag(Xs, Ys, Zs))
U4_aag(X, Xs, Ys, Zs, app_out_aag(Xs, Ys, Zs)) → app_out_aag(.(X, Xs), Ys, .(X, Zs))
U3_ag(X, L, R, Xs, app_out_aag(Ls, Rs, Xs)) → front_out_ag(tree(X, L, R), Xs)
↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
FRONT_IN_AA(tree(X, L, R), Xs) → U1_AA(X, L, R, Xs, front_in_aa(L, Ls))
FRONT_IN_AA(tree(X, L, R), Xs) → FRONT_IN_AA(L, Ls)
U1_AA(X, L, R, Xs, front_out_aa(L, Ls)) → FRONT_IN_AA(R, Rs)
front_in_aa(void, []) → front_out_aa(void, [])
front_in_aa(tree(X, void, void), .(X, [])) → front_out_aa(tree(X, void, void), .(X, []))
front_in_aa(tree(X, L, R), Xs) → U1_aa(X, L, R, Xs, front_in_aa(L, Ls))
U1_aa(X, L, R, Xs, front_out_aa(L, Ls)) → U2_aa(X, L, R, Xs, Ls, front_in_aa(R, Rs))
U2_aa(X, L, R, Xs, Ls, front_out_aa(R, Rs)) → U3_aa(X, L, R, Xs, app_in_aaa(Ls, Rs, Xs))
U3_aa(X, L, R, Xs, app_out_aaa(Ls, Rs, Xs)) → front_out_aa(tree(X, L, R), Xs)
app_in_aaa([], X, X) → app_out_aaa([], X, X)
app_in_aaa(.(X, Xs), Ys, .(X, Zs)) → U4_aaa(X, Xs, Ys, Zs, app_in_aaa(Xs, Ys, Zs))
U4_aaa(X, Xs, Ys, Zs, app_out_aaa(Xs, Ys, Zs)) → app_out_aaa(.(X, Xs), Ys, .(X, Zs))
↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ Narrowing
FRONT_IN_AA → U1_AA(front_in_aa)
U1_AA(front_out_aa) → FRONT_IN_AA
FRONT_IN_AA → FRONT_IN_AA
front_in_aa → front_out_aa
front_in_aa → U1_aa(front_in_aa)
U1_aa(front_out_aa) → U2_aa(front_in_aa)
U2_aa(front_out_aa) → U3_aa(app_in_aaa)
U3_aa(app_out_aaa) → front_out_aa
app_in_aaa → app_out_aaa
app_in_aaa → U4_aaa(app_in_aaa)
U4_aaa(app_out_aaa) → app_out_aaa
front_in_aa
U1_aa(x0)
U2_aa(x0)
U3_aa(x0)
app_in_aaa
U4_aaa(x0)
FRONT_IN_AA → U1_AA(U1_aa(front_in_aa))
FRONT_IN_AA → U1_AA(front_out_aa)
↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ Narrowing
↳ QDP
↳ NonTerminationProof
FRONT_IN_AA → U1_AA(U1_aa(front_in_aa))
FRONT_IN_AA → U1_AA(front_out_aa)
FRONT_IN_AA → FRONT_IN_AA
U1_AA(front_out_aa) → FRONT_IN_AA
front_in_aa → front_out_aa
front_in_aa → U1_aa(front_in_aa)
U1_aa(front_out_aa) → U2_aa(front_in_aa)
U2_aa(front_out_aa) → U3_aa(app_in_aaa)
U3_aa(app_out_aaa) → front_out_aa
app_in_aaa → app_out_aaa
app_in_aaa → U4_aaa(app_in_aaa)
U4_aaa(app_out_aaa) → app_out_aaa
front_in_aa
U1_aa(x0)
U2_aa(x0)
U3_aa(x0)
app_in_aaa
U4_aaa(x0)
FRONT_IN_AA → U1_AA(U1_aa(front_in_aa))
FRONT_IN_AA → U1_AA(front_out_aa)
FRONT_IN_AA → FRONT_IN_AA
U1_AA(front_out_aa) → FRONT_IN_AA
front_in_aa → front_out_aa
front_in_aa → U1_aa(front_in_aa)
U1_aa(front_out_aa) → U2_aa(front_in_aa)
U2_aa(front_out_aa) → U3_aa(app_in_aaa)
U3_aa(app_out_aaa) → front_out_aa
app_in_aaa → app_out_aaa
app_in_aaa → U4_aaa(app_in_aaa)
U4_aaa(app_out_aaa) → app_out_aaa